﻿/**
 * 
 * @file   FITKVAOneHDF5AdaptorSubSystem.h
 * @brief  子系统读写器
 * @author TanDongYang (tandongyang@diso.cn)
 * @date   2024-11-27
 * 
 */

#ifndef FITKVAONEHDF5ADAPTORSUBSYSTEM_H
#define FITKVAONEHDF5ADAPTORSUBSYSTEM_H

#include "FITKVAOneHDF5IOAPI.h"
#include "FITKVAOneHDF5AbstractAdaptor.h"
#include "FITK_Kernel/FITKAdaptor/FITKIOAdaptorFactory.h"

namespace IO
{
    class FITKVAOneHDF5IO_API FITKVAOneHDF5AdaptorSubSystem : public FITKVAOneHDF5AbstractAdaptor
    {
        FITKCLASS(IO, FITKVAOneHDF5AdaptorSubSystem);
    public:
        /**
         * @brief   Construct a new FITKVAOneHDF5AdaptorSubSystem object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-24 
         */
        explicit FITKVAOneHDF5AdaptorSubSystem() = default;
        
        /**
         * @brief   Destroy the FITKVAOneHDF5AdaptorSubSystem object
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-24 
         */
        virtual ~FITKVAOneHDF5AdaptorSubSystem() = default;

        /**
         * @brief   适配器读数据
         * @return  是否执行成功
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-24 
         */
        bool adaptR() override;

        /**
         * @brief   适配器写数据
         * @return  是否执行成功
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-24 
         */
        bool adaptW() override;

    protected:

        /**
         * @brief   读取数据集信息
         * @return  读取成功状态
         * @author  TanDongYang (tandongyang@diso.cn)
         * @date    2024-11-25 
         */
        bool readDataSet();
    };
    Register2FITKIOAdaptorFactory(VAOneHDF5PostData, Acoustics::FITKAcousticsHDF5SubSystem, FITKVAOneHDF5AdaptorSubSystem)

}

#endif // FITKVAONEHDF5ADAPTORSUBSYSTEM_H
